package servlets;
import java.io.IOException;
import java.util.ArrayList;
import entidades.*;
import dataSet.*;
import logica.*;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
 
public class ABMMateriasServlet {
	
	public void cargarPlanesEspecialidad(HttpServletRequest request, HttpServletResponse response){
		HttpSession session = request.getSession(true);	    

		loPlanes objLoPlanes = new loPlanes();
        ArrayList<PlanEspecialidad> planes = objLoPlanes.recuperTodos();
		//request.setAttribute("planes", planes);
		session.setAttribute("planes", planes);
       
	}
	public void cargarMaterias(HttpServletRequest request, HttpServletResponse response){
		loMaterias objLoMaterias = new loMaterias();
        ArrayList<Materia> materias = objLoMaterias.recuperTodas();
		request.setAttribute("materias", materias);

	}
	public void agregarMaterias(HttpServletRequest request, HttpServletResponse response,String nombre, int hsSemanales, int hsTotal, int idPlan){
        Materia nuevaMateria = new Materia();
        loMaterias objLoMaterias = new loMaterias();
        nuevaMateria.setDescripcion(nombre);
        nuevaMateria.setHsSemanales(hsSemanales);
        nuevaMateria.setHsTotales(hsTotal);
        nuevaMateria.setIdPlan(idPlan);
        objLoMaterias.agregarMateria(nuevaMateria);


	}
		
	public void setearMateria(HttpServletRequest request, HttpServletResponse response,int idMateria){
      
		Materia objMateria = new Materia();;
        loMaterias objLoMaterias = new loMaterias();
        objMateria = objLoMaterias.getMateria(idMateria);
		request.setAttribute("materia", objMateria);

	}
	public boolean modificarMateria(HttpServletRequest request, HttpServletResponse response,int idMateriaM, int hsSemanalesM, int hsTotalM, int idPlanM,String nombreM) throws ServletException, IOException{
		boolean asociada;
		HttpSession session = request.getSession(true);	    

		loMaterias objMateria = new loMaterias();
		Materia materiaMod = new Materia();
		loMaterias objLoMaterias = new loMaterias();

		if (!objLoMaterias.estaAsociadaACurso(String.valueOf(idMateriaM))) {
	        asociada = false;
		materiaMod = objMateria.getMateria(idMateriaM);
		materiaMod.setHsSemanales(hsSemanalesM);
		materiaMod.setDescripcion(nombreM);
		materiaMod.setHsTotales(hsTotalM);
		materiaMod.setIdPlan(idPlanM);
		objMateria.modificarMateria(materiaMod);
		String msgx = ("Materia Modificada <br/> <b>Redireccionando</b>");
		session.setAttribute("msg", msgx);
		
		}else{
			asociada = true;
			String msgx = ("Error Materia Asociada a uno o más cursos- <br/> <b>Redireccionando</b>");

			session.setAttribute("msg", msgx);
			    
			}
		session.setAttribute("direccion", "OpcionesAdmin?o=2");
		//request.getRequestDispatcher("Mensajes.jsp").forward(request, response);    
	 return asociada;
}
	public void eliminarMateria(HttpServletRequest request, HttpServletResponse response,int idMateriaEliminar) throws ServletException, IOException{
		HttpSession session = request.getSession(true);	    

		loMaterias objLoMaterias = new loMaterias();
        if (objLoMaterias.estaAsociadaACurso(String.valueOf(idMateriaEliminar))) {
        	String msgx = ("Error Materia Asociada- <br/> <b>Redireccionando</b>");

			session.setAttribute("msg", msgx);
			session.setAttribute("direccion", "OpcionesAdmin?o=2");
			request.getRequestDispatcher("Mensajes.jsp").forward(request, response);        }
        else
        {
        	objLoMaterias.borrarMateria(idMateriaEliminar);
        	String msgx = ("La Materia ha sido Eliminada <br/> <b>Redireccionando</b>");
			session.setAttribute("msg", msgx);
			session.setAttribute("direccion", "OpcionesAdmin?o=2");
			request.getRequestDispatcher("Mensajes.jsp").forward(request, response);

        }
        
        
        }
	
	
	
	
	
	public boolean validarCampos(String hsTotales, String hsSemanales, String nombre, String idPlan){
		boolean a =true;
	if (hsTotales.isEmpty() || hsSemanales.isEmpty()|| nombre.isEmpty() || idPlan.isEmpty()){
		a = false;
	}
		return a;
	}

}
